home *** CD-ROM | disk | FTP | other *** search
- #include "event.h"
- #include <string.h>
-
- event::event( const char* name ) {
-
- APIRET rc;
-
- // --------------------------
- // "\\sem32\\" + name + NULL;
- // --------------------------
-
- char* fullname = new char[ strlen( name ) + 8 ];
- strcpy( fullname, "\\SEM32\\" );
- strcpy( fullname + 7, name );
-
- // ---------------------------
- // Try creating the semaphore.
- // ---------------------------
-
- rc = DosCreateEventSem( fullname, &handle, 0, 0 );
-
- if ( rc == 285 ) {
- // -------------------------------------
- // Duplicate name encountered. try just
- // opening the semaphore
- // -------------------------------------
-
- handle = 0;
-
- DosOpenEventSem( fullname, &handle );
-
- }
-
- // ----------------------
- // block on the semaphore
- // ----------------------
-
- ULONG dummy;
- DosWaitEventSem( handle, -1 ); //infinite wait
-
- // ----------------------------------
- // Reset and then close the semaphore
- // ----------------------------------
-
- DosResetEventSem( handle, &dummy );
-
- delete [] fullname;
- }
-
-
- void event::post( const char* name ) {
-
- HEV handle;
-
- // --------------------------
- // "\\sem32\\" + name + NULL;
- // --------------------------
-
- char* fullname = new char[ strlen( name ) + 8 ];
- strcpy( fullname, "\\SEM32\\" );
- strcpy( fullname + 7, name );
-
- handle = 0;
- DosOpenEventSem( fullname, &handle );
-
- DosPostEventSem( handle );
-
- delete [] fullname;
- }
-